% **************************************************************************
%
%  Package 'caratula', version 0.2 (para componer caratulas de TPs del DC).
%
%  En caso de dudas, problemas o sugerencias sobre este package escribir a
%  Nico Rosner (nrosner arroba dc.uba.ar).
%
% **************************************************************************



% ----- Informacion sobre el package para el sistema -----------------------

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{caratula}[2003/4/13 v0.1 Para componer caratulas de TPs del DC]


% ----- Imprimir un mensajito al procesar un .tex que use este package -----

\typeout{Cargando package 'caratula' v0.2 (21/4/2003)}


% ----- Algunas variables --------------------------------------------------

\let\Materia\relax
\let\Submateria\relax
\let\Titulo\relax
\let\Subtitulo\relax
\let\Grupo\relax
\let\Resumen\relax
\let\PalabrasClave\relax


% ----- Comandos para que el usuario defina las variables ------------------
\def\materia#1{\def\Materia{#1}}
\def\submateria#1{\def\Submateria{#1}}
\def\titulo#1{\def\Titulo{#1}}
\def\subtitulo#1{\def\Subtitulo{#1}}
\def\grupo#1{\def\Grupo{#1}}
\def\resumen#1{\def\Resumen{#1}}
\def\palabrasclave#1{\def\PalabrasClave{#1}}


% ----- Token list para los integrantes ------------------------------------
\newtoks\intlist\intlist={}


% ----- Comando para que el usuario agregue integrantes

\def\integrante#1#2#3{\intlist=\expandafter{\the\intlist
	\rule{0pt}{1.2em}#1&#2&\tt #3\\[0.2em]}}


% ----- Macro para generar la tabla de integrantes -------------------------

\def\tablaints{%
	\begin{tabular}{|l@{\hspace{4ex}}c@{\hspace{4ex}}l|}
		\hline
		\rule{0pt}{1.2em}Integrante & L.U. & Correo electr\'onico\\[0.2em]
		\hline
		\the\intlist
		\hline
	\end{tabular}}


% ----- Codigo para manejo de errores --------------------------------------

\def\se{\let\ifsetuperror\iftrue}
\def\ifsetuperror{%
	\let\ifsetuperror\iffalse
	\ifx\Materia\relax\se\errhelp={Te olvidaste de proveer una \materia{}.}\fi
	\ifx\Titulo\relax\se\errhelp={Te olvidaste de proveer un \titulo{}.}\fi
	\edef\mlist{\the\intlist}\ifx\mlist\empty\se%
	\errhelp={Tenes que proveer al menos un \integrante{nombre}{lu}{email}.}\fi
	\expandafter\ifsetuperror}


% ----- Reemplazamos el comando \maketitle de LaTeX con el nuestro ---------

\def\maketitle{%
	\ifsetuperror\errmessage{Faltan datos de la caratula! Ingresar 'h' para mas informacion.}\fi
	\thispagestyle{empty}
	\begin{center}
	\vspace*{\stretch{1}}
	{\Large Universidad de Buenos Aires}\\[0.6em]
	{\Large Facultad de Ciencias Exactas y Naturales}\\[0.6em]
	{\Large Departamento de Computaci\'on}\\[0.6em]
	{\Large \Materia}\\[0.6em]
	{	1er. cuatrimestre 2007}\\[0.6em]
	\ifx\Submateria\relax\else{\Large \Submateria}\\[0.5em]\fi
	\par\vspace{\stretch{1}}
	{\Large \textbf{\Titulo}}\\[0.8em]
	{\Large \Subtitulo}
	
	\par\vspace{\stretch{1}}
	
	%{\large N\'umero de grupo: \_\_\_\_\_\_\_\_\_\_}
	
	%{\large Nombre del grupo: \Grupo}
	
	\par\vspace{\stretch{1}}
	
	\tablaints
	\par\vspace{\stretch{0.5}}

	\begin{tabular}{|l|c|c|}
		\hline
		\rule{0pt}{1.2em}Instancia & Corrector & Nota\\[0.2em]
		\hline
		Entrega		& & \\
		\hline
		Reentrega & & \\
		\hline
	\end{tabular}
	
	\end{center}
	
	\par\vspace{\stretch{0.5}}
	
	\textbf{Abstract}: El objetivo del presente Trabajo Pr\'actico es desarrollar
	un m\'odulo de pruebas para funciones en lenguaje ensamblador de la arquitectura x86.
	
	\par\vspace{\stretch{7}}
	
	\newpage
}
